package com.cgs.query.service

import com.cgs.query.domain.BoundSql
import com.cgs.query.domain.ExecutionObj

/**
 * ExecutionObj 业务接口定义
 */
interface IExecutionObjService {

    /**
     * 通过定义名、别名、项目名进行查询
     */
    fun findByProjectNameAndWholeName(projectName: String, wholeName: String): ExecutionObj?

    /**
     * 通过id查找
     */
    fun findById(id: String): ExecutionObj?

    /**
     * 通过defineID查找所有版本信息
     *
     * Map<version,ExecutionObj>
     */
    fun findByDefineId(id: String): Map<String, ExecutionObj>

    /**
     * 通过defineID 集合查询所有的执行对象
     */
    fun findByDefineIds(ids: Iterable<String>): List<ExecutionObj>

    /**
     * 保存
     */
    fun save(executionObj: ExecutionObj): ExecutionObj

    /**
     * 保存
     */
    fun save(executionObjs: Iterable<ExecutionObj>)

    /**
     * 通过defineID和版本号查找某版本精确的信息
     */
    fun findByDefineIdAndVersion(id: String, version: String): ExecutionObj?

    /**
     * 通过id删除
     */
    fun delete(id: String)

    /**
     * 通过id删除
     */
    fun delete(ids: Iterable<String>)

    /**
     * sql渲染完成后的对象
     */
    fun rendered(id: String, param: Map<String, Any?>): BoundSql

    /**
     * sql渲染完成后的对象
     */
    fun rendered(executionObj: ExecutionObj): BoundSql

}